/**
 * 文件名：@WebContextResolver.java <br/>
 * 包名：cn.efunbox.afw.web.mvc.context <br/>
 * 项目名：afw-mvc-web <br/>
 * @author xtwin <br/>
 */
package cn.efunbox.afw.web.mvc.context;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.servlet.LocaleResolver;

import cn.efunbox.afw.core.AfwContext;
import cn.efunbox.afw.core.mvc.context.Context;
import cn.efunbox.afw.core.mvc.context.ContextResolver;
import cn.efunbox.afw.web.mvc.springmvc.AfwDispatchServlet;
import cn.efunbox.afw.web.util.AfwWebConstant;

/**
 * 类名：WebContextResolver  <br />
 *
 * 功能：基于web环境的上下文对象解析器实现
 *
 * @author xtwin <br />
 * 创建时间：2015年12月1日 下午3:33:55  <br />
 * @version 2015年12月1日
 */
public class WebContextResolver implements ContextResolver {

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2015年12月1日 下午3:34:06<br/>
	 * 
	 * @param env
	 * @return <br/>
	 */
	@Override
	public Context resolve(/*Environment env*/) throws Exception {
		//HttpServletRequest request = env.getProperty("");
		HttpServletRequest request = AfwContext.getValue(AfwWebConstant.KEY_REQUEST_IN_AFWCONTEXT); 
		
		// 创建上下文对象
		WebContext context = new WebContext(request);
		
		// 执行初始化
		context.init();
		
		LocaleResolver localeResolver = (LocaleResolver) request.getAttribute(AfwDispatchServlet.LOCALE_RESOLVER_ATTRIBUTE);
		
		if (null != localeResolver) {
			context.setLocale(localeResolver.resolveLocale(request));
		}
		
		return context;
	}
}